//=========================================GPS模块引脚接线================================================//
//   VCC         接         DC 5V         //GPS电源正
//   GND         接          GND          //GPS电源地
//=======================================液晶屏数据线接线==========================================//
//   TX         接          PA3           //GPS TX信号
//   RX         接          PA2           //GPS RX信号
//=================================================================================================//
//=========================================OLED模块 引脚接线================================================//
//   VCC         接       DC 5V/3.3V      //OLED屏电源正
//   GND         接          GND          //OLED屏电源地
//=======================================液晶屏数据线接线==========================================//
//   D1          接          PB15         //OLED屏SPI写信号
//   D0          接          PB13         //OLED屏SPI时钟信号
//=======================================液晶屏控制线接线==========================================//
//   RES         接          PB10         //OLED屏复位控制信号
//   DC          接          PB11         //OLED屏数据/命令选择控制信号
//   CS          接          PB12         //OLED屏片选控制信号
#include "Task_GPS.h"



#define GPS_TASK_PRIO 8
#define GPS_STK_SIZE 1024
TaskHandle_t GPSTask_Handler;
QueueHandle_t Usart5_sem;


/* 浮点运算入口函数*/
void Task_Gps(void *pvParameters);
void TakeGpsData(nmea_msg SrcData,	OsdRefresh_Struct *SaveDec);
void Gps_ConvertHexToDec(OsdRefresh_Struct *_OsdRefresh_Struct, nmea_msg SrcData);


void task_GPS_Create(void)
{
	/* 创建浮点运算任务 */
	  xTaskCreate((TaskFunction_t )Task_Gps,            //任务函数
                (const char*    )"gps_task",          //任务名称
                (uint16_t       )GPS_STK_SIZE,        //任务堆栈大小
                (void*          )NULL,                  //传递给任务函数的参数
                (UBaseType_t    )GPS_TASK_PRIO,       //任务优先级
                (TaskHandle_t*  )&GPSTask_Handler);   //任务句柄 

		Usart5_sem = xSemaphoreCreateBinary();	//GPS接收信号量								
}


void Task_Gps(void *pvParameters)
{
	static uint8_t gps_time = 0;
	
	while(1)
	{
		if(xSemaphoreTake(Usart5_sem, portMAX_DELAY) == pdTRUE)
		{
			gps_time++;
			if(gps_time > 3)
			{
				gps_time = 0;
				NMEA_Analysis(&GPS_message,Uart5_RXBUF);
				Gps_ConvertHexToDec(OsdRefresh_Family,GPS_message);
				My_Reset(Uart5_RXBUF,UART5_BUFLEN-1);
				Uart5_Index = 0;
				
				GPS_Refresh_Set();
			}
		}
	}
}






	